package top.bulk.delay.entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

import java.time.LocalDateTime;

/**
 * 订单对象
 *
 * @author 散装java
 * @date 2024-08-13
 */
@Data
@Accessors(chain = true)
@AllArgsConstructor
@NoArgsConstructor
public class OrderEntity {
    private Integer id;
    private String orderNo;
    private Integer userId;
    /**
     * 订单状态，这里是模拟的状态，实际业务场景状态更多
     * 这里指代，0 初始化，1 等付款 ，3 已完成，4 已取消，5 超时关闭
     * <p>
     * 本示例演示，1状态，超时后，变更为 5 超时关闭
     */
    private Integer status;
    private LocalDateTime addTime;
    private LocalDateTime updateTime;

    /**
     * 判断状态是否可以执行关闭操作
     */
    public boolean canClose(Integer second) {
        // 超过了制定时间，还没有付款的，即为可关闭状态
        return status == 1 && addTime.isBefore(LocalDateTime.now().minusSeconds(second));
    }
}
